home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DController.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  10.6 KB  |  351 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DController.h
  3.  
  4.      Contains:    Q3Controller methods    
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DCONTROLLER__
  18. #define __QD3DCONTROLLER__
  19.  
  20. #ifndef __QD3D__
  21. #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25.  
  26. #if PRAGMA_ONCE
  27. #pragma once
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #if PRAGMA_IMPORT
  35. #pragma import on
  36. #endif
  37.  
  38. #if PRAGMA_STRUCT_ALIGN
  39.     #pragma options align=power
  40. #elif PRAGMA_STRUCT_PACKPUSH
  41.     #pragma pack(push, 2)
  42. #elif PRAGMA_STRUCT_PACK
  43.     #pragma pack(2)
  44. #endif
  45.  
  46. #if PRAGMA_ENUM_ALWAYSINT
  47.     #pragma enumsalwaysint on
  48. #elif PRAGMA_ENUM_OPTIONS
  49.     #pragma option enum=int
  50. #elif PRAGMA_ENUM_PACK
  51.     #if __option(pack_enums)
  52.         #define PRAGMA_ENUM_PACK__QD3DCONTROLLER__
  53.     #endif
  54.     #pragma options(!pack_enums)
  55. #endif
  56.  
  57. /******************************************************************************
  58.  **                                                                             **
  59.  **                                Type Definitions                             **
  60.  **                                                                             **
  61.  *****************************************************************************/
  62. #define kQ3ControllerSetChannelMaxDataSize        256
  63. typedef CALLBACK_API_C( TQ3Status , TQ3ChannelGetMethod )(TQ3ControllerRef controllerRef, unsigned long channel, void *data, unsigned long *dataSize);
  64. typedef CALLBACK_API_C( TQ3Status , TQ3ChannelSetMethod )(TQ3ControllerRef controllerRef, unsigned long channel, const void *data, unsigned long dataSize);
  65.  
  66. struct TQ3ControllerData {
  67.     char *                            signature;
  68.     unsigned long                     valueCount;
  69.     unsigned long                     channelCount;
  70.     TQ3ChannelGetMethod             channelGetMethod;
  71.     TQ3ChannelSetMethod             channelSetMethod;
  72. };
  73. typedef struct TQ3ControllerData        TQ3ControllerData;
  74. /******************************************************************************
  75.  **                                                                             **
  76.  **                                     Routines                                 **
  77.  **                                                                             **
  78.  *****************************************************************************/
  79. EXTERN_API_C( TQ3Status )
  80. Q3Controller_GetListChanged        (TQ3Boolean *            listChanged,
  81.                                  unsigned long *        serialNumber);
  82.  
  83. EXTERN_API_C( TQ3Status )
  84. Q3Controller_Next                (TQ3ControllerRef         controllerRef,
  85.                                  TQ3ControllerRef *        nextControllerRef);
  86.  
  87. EXTERN_API_C( TQ3ControllerRef )
  88. Q3Controller_New                (const TQ3ControllerData * controllerData);
  89.  
  90. EXTERN_API_C( TQ3Status )
  91. Q3Controller_Decommission        (TQ3ControllerRef         controllerRef);
  92.  
  93. EXTERN_API_C( TQ3Status )
  94. Q3Controller_SetActivation        (TQ3ControllerRef         controllerRef,
  95.                                  TQ3Boolean             active);
  96.  
  97. EXTERN_API_C( TQ3Status )
  98. Q3Controller_GetActivation        (TQ3ControllerRef         controllerRef,
  99.                                  TQ3Boolean *            active);
  100.  
  101. EXTERN_API_C( TQ3Status )
  102. Q3Controller_GetSignature        (TQ3ControllerRef         controllerRef,
  103.                                  char *                    signature,
  104.                                  unsigned long             numChars);
  105.  
  106. EXTERN_API_C( TQ3Status )
  107. Q3Controller_SetChannel            (TQ3ControllerRef         controllerRef,
  108.                                  unsigned long             channel,
  109.                                  const void *            data,
  110.                                  unsigned long             dataSize);
  111.  
  112. EXTERN_API_C( TQ3Status )
  113. Q3Controller_GetChannel            (TQ3ControllerRef         controllerRef,
  114.                                  unsigned long             channel,
  115.                                  void *                    data,
  116.                                  unsigned long *        dataSize);
  117.  
  118. EXTERN_API_C( TQ3Status )
  119. Q3Controller_GetValueCount        (TQ3ControllerRef         controllerRef,
  120.                                  unsigned long *        valueCount);
  121.  
  122. EXTERN_API_C( TQ3Status )
  123. Q3Controller_SetTracker            (TQ3ControllerRef         controllerRef,
  124.                                  TQ3TrackerObject         tracker);
  125.  
  126. EXTERN_API_C( TQ3Status )
  127. Q3Controller_HasTracker            (TQ3ControllerRef         controllerRef,
  128.                                  TQ3Boolean *            hasTracker);
  129.  
  130. EXTERN_API_C( TQ3Status )
  131. Q3Controller_Track2DCursor        (TQ3ControllerRef         controllerRef,
  132.                                  TQ3Boolean *            track2DCursor);
  133.  
  134. EXTERN_API_C( TQ3Status )
  135. Q3Controller_Track3DCursor        (TQ3ControllerRef         controllerRef,
  136.                                  TQ3Boolean *            track3DCursor);
  137.  
  138. EXTERN_API_C( TQ3Status )
  139. Q3Controller_GetButtons            (TQ3ControllerRef         controllerRef,
  140.                                  unsigned long *        buttons);
  141.  
  142. EXTERN_API_C( TQ3Status )
  143. Q3Controller_SetButtons            (TQ3ControllerRef         controllerRef,
  144.                                  unsigned long             buttons);
  145.  
  146. EXTERN_API_C( TQ3Status )
  147. Q3Controller_GetTrackerPosition    (TQ3ControllerRef         controllerRef,
  148.                                  TQ3Point3D *            position);
  149.  
  150. EXTERN_API_C( TQ3Status )
  151. Q3Controller_SetTrackerPosition    (TQ3ControllerRef         controllerRef,
  152.                                  const TQ3Point3D *        position);
  153.  
  154. EXTERN_API_C( TQ3Status )
  155. Q3Controller_MoveTrackerPosition (TQ3ControllerRef         controllerRef,
  156.                                  const TQ3Vector3D *    delta);
  157.  
  158. EXTERN_API_C( TQ3Status )
  159. Q3Controller_GetTrackerOrientation (TQ3ControllerRef     controllerRef,
  160.                                  TQ3Quaternion *        orientation);
  161.  
  162. EXTERN_API_C( TQ3Status )
  163. Q3Controller_SetTrackerOrientation (TQ3ControllerRef     controllerRef,
  164.                                  const TQ3Quaternion *    orientation);
  165.  
  166. EXTERN_API_C( TQ3Status )
  167. Q3Controller_MoveTrackerOrientation (TQ3ControllerRef     controllerRef,
  168.                                  const TQ3Quaternion *    delta);
  169.  
  170. EXTERN_API_C( TQ3Status )
  171. Q3Controller_GetValues            (TQ3ControllerRef         controllerRef,
  172.                                  unsigned long             valueCount,
  173.                                  float *                values,
  174.                                  TQ3Boolean *            changed,
  175.                                  unsigned long *        serialNumber);
  176.  
  177. EXTERN_API_C( TQ3Status )
  178. Q3Controller_SetValues            (TQ3ControllerRef         controllerRef,
  179.                                  const float *            values,
  180.                                  unsigned long             valueCount);
  181.  
  182.  
  183. /******************************************************************************
  184.  **                                                                             **
  185.  **                                     Routines                                 **
  186.  **                                                                             **
  187.  *****************************************************************************/
  188. EXTERN_API_C( TQ3ControllerStateObject )
  189. Q3ControllerState_New            (TQ3ControllerRef         controllerRef);
  190.  
  191. EXTERN_API_C( TQ3Status )
  192. Q3ControllerState_SaveAndReset    (TQ3ControllerStateObject  controllerStateObject);
  193.  
  194. EXTERN_API_C( TQ3Status )
  195. Q3ControllerState_Restore        (TQ3ControllerStateObject  controllerStateObject);
  196.  
  197.  
  198. /******************************************************************************
  199.  **                                                                             **
  200.  **                                Type Definitions                             **
  201.  **                                                                             **
  202.  *****************************************************************************/
  203. typedef CALLBACK_API_C( TQ3Status , TQ3TrackerNotifyFunc )(TQ3TrackerObject trackerObject, TQ3ControllerRef controllerRef);
  204. /******************************************************************************
  205.  **                                                                             **
  206.  **                                     Routines                                 **
  207.  **                                                                             **
  208.  *****************************************************************************/
  209. EXTERN_API_C( TQ3TrackerObject )
  210. Q3Tracker_New                    (TQ3TrackerNotifyFunc     notifyFunc);
  211.  
  212. EXTERN_API_C( TQ3Status )
  213. Q3Tracker_SetNotifyThresholds    (TQ3TrackerObject         trackerObject,
  214.                                  float                     positionThresh,
  215.                                  float                     orientationThresh);
  216.  
  217. EXTERN_API_C( TQ3Status )
  218. Q3Tracker_GetNotifyThresholds    (TQ3TrackerObject         trackerObject,
  219.                                  float *                positionThresh,
  220.                                  float *                orientationThresh);
  221.  
  222. EXTERN_API_C( TQ3Status )
  223. Q3Tracker_SetActivation            (TQ3TrackerObject         trackerObject,
  224.                                  TQ3Boolean             active);
  225.  
  226. EXTERN_API_C( TQ3Status )
  227. Q3Tracker_GetActivation            (TQ3TrackerObject         trackerObject,
  228.                                  TQ3Boolean *            active);
  229.  
  230. EXTERN_API_C( TQ3Status )
  231. Q3Tracker_GetButtons            (TQ3TrackerObject         trackerObject,
  232.                                  unsigned long *        buttons);
  233.  
  234. EXTERN_API_C( TQ3Status )
  235. Q3Tracker_ChangeButtons            (TQ3TrackerObject         trackerObject,
  236.                                  TQ3ControllerRef         controllerRef,
  237.                                  unsigned long             buttons,
  238.                                  unsigned long             buttonMask);
  239.  
  240. EXTERN_API_C( TQ3Status )
  241. Q3Tracker_GetPosition            (TQ3TrackerObject         trackerObject,
  242.                                  TQ3Point3D *            position,
  243.                                  TQ3Vector3D *            delta,
  244.                                  TQ3Boolean *            changed,
  245.                                  unsigned long *        serialNumber);
  246.  
  247. EXTERN_API_C( TQ3Status )
  248. Q3Tracker_SetPosition            (TQ3TrackerObject         trackerObject,
  249.                                  TQ3ControllerRef         controllerRef,
  250.                                  const TQ3Point3D *        position);
  251.  
  252. EXTERN_API_C( TQ3Status )
  253. Q3Tracker_MovePosition            (TQ3TrackerObject         trackerObject,
  254.                                  TQ3ControllerRef         controllerRef,
  255.                                  const TQ3Vector3D *    delta);
  256.  
  257. EXTERN_API_C( TQ3Status )
  258. Q3Tracker_GetOrientation        (TQ3TrackerObject         trackerObject,
  259.                                  TQ3Quaternion *        orientation,
  260.                                  TQ3Quaternion *        delta,
  261.                                  TQ3Boolean *            changed,
  262.                                  unsigned long *        serialNumber);
  263.  
  264. EXTERN_API_C( TQ3Status )
  265. Q3Tracker_SetOrientation        (TQ3TrackerObject         trackerObject,
  266.                                  TQ3ControllerRef         controllerRef,
  267.                                  const TQ3Quaternion *    orientation);
  268.  
  269. EXTERN_API_C( TQ3Status )
  270. Q3Tracker_MoveOrientation        (TQ3TrackerObject         trackerObject,
  271.                                  TQ3ControllerRef         controllerRef,
  272.                                  const TQ3Quaternion *    delta);
  273.  
  274. EXTERN_API_C( TQ3Status )
  275. Q3Tracker_SetEventCoordinates    (TQ3TrackerObject         trackerObject,
  276.                                  unsigned long             timeStamp,
  277.                                  unsigned long             buttons,
  278.                                  const TQ3Point3D *        position,
  279.                                  const TQ3Quaternion *    orientation);
  280.  
  281. EXTERN_API_C( TQ3Status )
  282. Q3Tracker_GetEventCoordinates    (TQ3TrackerObject         trackerObject,
  283.                                  unsigned long             timeStamp,
  284.                                  unsigned long *        buttons,
  285.                                  TQ3Point3D *            position,
  286.                                  TQ3Quaternion *        orientation);
  287.  
  288. /******************************************************************************
  289.  **                                                                             **
  290.  **                                 Types                                         **
  291.  **                                                                             **
  292.  *****************************************************************************/
  293. typedef CALLBACK_API_C( void , TQ3CursorTrackerNotifyFunc )(void );
  294. /******************************************************************************
  295.  **                                                                             **
  296.  **                                 Routines                                     **
  297.  **                                                                             **
  298.  *****************************************************************************/
  299. EXTERN_API_C( TQ3Status )
  300. Q3CursorTracker_PrepareTracking    (void);
  301.  
  302. EXTERN_API_C( TQ3Status )
  303. Q3CursorTracker_SetTrackDeltas    (TQ3Boolean             trackDeltas);
  304.  
  305. EXTERN_API_C( TQ3Status )
  306. Q3CursorTracker_GetAndClearDeltas (float *                depth,
  307.                                  TQ3Quaternion *        orientation,
  308.                                  TQ3Boolean *            hasOrientation,
  309.                                  TQ3Boolean *            changed,
  310.                                  unsigned long *        serialNumber);
  311.  
  312. EXTERN_API_C( TQ3Status )
  313. Q3CursorTracker_SetNotifyFunc    (TQ3CursorTrackerNotifyFunc  notifyFunc);
  314.  
  315. EXTERN_API_C( TQ3Status )
  316. Q3CursorTracker_GetNotifyFunc    (TQ3CursorTrackerNotifyFunc * notifyFunc);
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323. #if PRAGMA_ENUM_ALWAYSINT
  324.     #pragma enumsalwaysint reset
  325. #elif PRAGMA_ENUM_OPTIONS
  326.     #pragma option enum=reset
  327. #elif defined(PRAGMA_ENUM_PACK__QD3DCONTROLLER__)
  328.     #pragma options(pack_enums)
  329. #endif
  330.  
  331. #if PRAGMA_STRUCT_ALIGN
  332.     #pragma options align=reset
  333. #elif PRAGMA_STRUCT_PACKPUSH
  334.     #pragma pack(pop)
  335. #elif PRAGMA_STRUCT_PACK
  336.     #pragma pack()
  337. #endif
  338.  
  339. #ifdef PRAGMA_IMPORT_OFF
  340. #pragma import off
  341. #elif PRAGMA_IMPORT
  342. #pragma import reset
  343. #endif
  344.  
  345. #ifdef __cplusplus
  346. }
  347. #endif
  348.  
  349. #endif /* __QD3DCONTROLLER__ */
  350.  
  351.